package com.jeffse.light.stream.core.pojo.window;

import com.jeffse.light.stream.core.data.context.OperatorContext;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class SlideWindowInfo implements Serializable {
    /**
     * 类型 时间滑动窗口，次数滑动窗口， 时间次数滚动窗口，次数时间滚动窗口
     *
     * 时间滑动窗口： 每隔时间 y， 计算最新 时间的数据往前截取 x 时间窗口的数据
     * 次数滑动窗口： 每隔 y 次，计算最后一次数据往前推 x 次组成的集合的数据
     * 时间次数滚动窗口： 每隔 y 次，计算最新 时间的数据往前截取 x 时间窗口的数据
     * 次数时间滚动窗口： 每隔时间 y, 计算最后一次数据往前推 x 次组成的集合的数据
     */
    private Enum<OperatorContext.WindowType> type;

    /**
     * 滑动的第一个参数
     */
    private Integer x;

    /**
     * X 参数的单位， 时分秒或者次数
     */
    private Enum<OperatorContext.UnitType> unitX;

    /**
     * 滑动的第二个参数
     */
    private Integer y;

    /**
     * Y 参数的单位， 时分秒或者次数
     */
    private Enum<OperatorContext.UnitType> unitY;

    /**
     * 系统时间还是event时间
     */
    private Boolean isEventTime = false;
}
